import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  //存值，存对象，存mutations改变的值，存mutations改变的对象
  state: {
    token: '',//要求是json字符串，可以在接收token时直接设置成字符串，避免这里改太多
    //可以设置成从sessionStorage里面取，也可以设置成{}
    userinfo: JSON.parse(sessionStorage.getItem('userinfo')),
  },
  //改变state中值，改变state中对象  setter
  mutations: {
    SET_TOKEN:(state, token) =>{
      state.token=token;
      //如果关闭浏览器，token还会存放到local的Storage里
      localStorage.setItem('token',token);
    } ,
    SET_USERINFO:(state, userinfo) => {
      state.userinfo=userinfo;
      //jwt是验证 token的来验证用户的，有时候我们关闭了浏览器session中的信息会丢失，
      // 这时如果token没消失，只需要验证接口就能重新获得信息
      //sessionStorage中不能存对象，只能存字符串
      sessionStorage.setItem('userinfo',JSON.stringify(userinfo));
    },
    REMOVE_USERINFO:(state) => {
      state.userinfo= {};
      state.token='';
      localStorage.setItem('token',state.token='');
      sessionStorage.setItem('userinfo',JSON.stringify(''));
    }
  },
  //获取值 getter
  getters:{
    getUserInfo:state => {
      return state.userinfo
    },
  
    getToken:state => {
      return state.token
    }
  },
  //通过控制mutations来异步操作state中的值
  actions: {
  },
  modules: {
  }
  
})
